package frsf.cidisi.exercise.proyectoia.search;

import frsf.cidisi.exerscise.proyectoia.clasesProyectoIA.CuadranteBajo;
import frsf.cidisi.exerscise.proyectoia.clasesProyectoIA.CuadranteMedio;
import frsf.cidisi.exerscise.proyectoia.clasesProyectoIA.Esquina;
import frsf.cidisi.faia.agent.Perception;
import frsf.cidisi.faia.agent.search.SearchBasedAgentState;

/**
 * Represent the internal state of the Agent.
 */
public class StateDrone extends SearchBasedAgentState {
	
	//TODO: Setup Variables
    private int nivel;
    private Esquina esquinaActual;
    private CuadranteBajo cuadranteBajo;
    private CuadranteMedio cuadranteMedio;
    private int energia;
    //private Other coordenadasObservadas;
	

    public StateDrone() {
    
    	//TODO: Complete Method
    	/*
			// nivel = initData0;
			// coordenadas = initData1;
			// cuadranteMedio = initData2;
			// cuadranteAlto = initData3;
			// energia = initData4;
			// Mapa = initData5;
			// coordenadasObservadas = initData6;
        */
        this.initState();
    }

    /**
     * This method clones the state of the agent. It's used in the search
     * process, when creating the search tree.
     */
    @Override
    public SearchBasedAgentState clone() {
        
		//TODO: Complete Method
		
        return null;
    }

    /**
     * This method is used to update the Agent State when a Perception is
     * received by the Simulator.
     */
    @Override
    public void updateState(Perception p) {
        
        //TODO: Complete Method
    }

    /**
     * This method is optional, and sets the initial state of the agent.
     */
    @Override
    public void initState() {
        
	//TODO: Complete Method

    }

    /**
     * This method returns the String representation of the agent state.
     */
    @Override
    public String toString() {
        String str = "";

        //TODO: Complete Method

        return str;
    }

    /**
     * This method is used in the search process to verify if the node already
     * exists in the actual search.
     */
    @Override
    public boolean equals(Object obj) {
       
       //TODO: Complete Method
        
        return true;
    }

    //TODO: Complete this section with agent-specific methods
    // The following methods are agent-specific:
   	
     public int getNivel(){
        return nivel;
     }
     public void setNivel(int arg){
        nivel = arg;
     }
     public Esquina getEsquinaActual(){
        return esquinaActual;
     }
     public void setEsquinaActual(Esquina arg){
        esquinaActual = arg;
     }
     public CuadranteBajo getCuadranteBajo(){
        return cuadranteBajo;
     }
     public void setCuadranteBajo(CuadranteBajo arg){
        cuadranteBajo = arg;
     }
     public CuadranteMedio getCuadranteMedio(){
        return cuadranteMedio;
     }
     public void setCuadranteMedio(CuadranteMedio arg){
        cuadranteMedio = arg;
     }
     public int getEnergia(){
        return energia;
     }
     public void setEnergia(int arg){
        energia = arg;
     }

//     public Other getcoordenadasObservadas(){
//        return coordenadasObservadas;
//     }
//     public void setcoordenadasObservadas(Other arg){
//        coordenadasObservadas = arg;
//     }

	
}

